Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • Download


docs/manual/_static/searchtools.js dff7bb0ceb4a036d31bba65875bc92ff8a31074f (dff7bb0c) Text, 21.78 KB

T8b949e/*
* Sphinx JavaScript utilities for the full-text search.
*/
Ta5d6ff"use strict"Tb4b4b4;

T8b949e/**
* Simple result scoring code.
*/
Tff7b72if Tb4b4b4(Tff7b72typeof Te6edf3Scorer Tff7b72=== Ta5d6ff"undefined"Tb4b4b4) Tb4b4b4{
Tff7b72var Te6edf3Scorer Tff7b72= Tb4b4b4{
T8b949e// Implement the following function to further tweak the score for each result
T8b949e// The function takes a result array [docname, title, anchor, descr, score, filename]
T8b949e// and returns the new score.
T8b949e/*
score: result => {
const [docname, title, anchor, descr, score, filename, kind] = result
return score
},
*/

T8b949e// query matches the full name of an object
Te6edf3objNameMatchTff7b72: T79c0ff11Tb4b4b4,
T8b949e// or matches in the last dotted part of the object name
Te6edf3objPartialMatchTff7b72: T79c0ff6Tb4b4b4,
T8b949e// Additive scores depending on the priority of the object
Te6edf3objPrioTff7b72: Tb4b4b4{
T79c0ff0Tff7b72: T79c0ff15Tb4b4b4, T8b949e// used to be importantResults
T79c0ff1Tff7b72: T79c0ff5Tb4b4b4, T8b949e// used to be objectResults
T79c0ff2Tff7b72: Tff7b72-T79c0ff5Tb4b4b4, T8b949e// used to be unimportantResults
Tb4b4b4}Tb4b4b4,
T8b949e// Used when the priority is not in the mapping.
Te6edf3objPrioDefaultTff7b72: T79c0ff0Tb4b4b4,

T8b949e// query found in title
Te6edf3titleTff7b72: T79c0ff15Tb4b4b4,
Te6edf3partialTitleTff7b72: T79c0ff7Tb4b4b4,
T8b949e// query found in terms
Te6edf3termTff7b72: T79c0ff5Tb4b4b4,
Te6edf3partialTermTff7b72: T79c0ff2Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}

T8b949e// Global search result kind enum, used by themes to style search results.
Tff7b72class Te6edf3SearchResultKind Tb4b4b4{
Tff7b72static Te6edf3get Te6edf3indexTb4b4b4(Tb4b4b4) Tb4b4b4{ Tff7b72return Ta5d6ff"index"Tb4b4b4; Tb4b4b4}
Tff7b72static Te6edf3get Te6edf3objectTb4b4b4(Tb4b4b4) Tb4b4b4{ Tff7b72return Ta5d6ff"object"Tb4b4b4; Tb4b4b4}
Tff7b72static Te6edf3get Te6edf3textTb4b4b4(Tb4b4b4) Tb4b4b4{ Tff7b72return Ta5d6ff"text"Tb4b4b4; Tb4b4b4}
Tff7b72static Te6edf3get Te6edf3titleTb4b4b4(Tb4b4b4) Tb4b4b4{ Tff7b72return Ta5d6ff"title"Tb4b4b4; Tb4b4b4}
Tb4b4b4}

Tff7b72const Te6edf3_removeChildren Tff7b72= Tb4b4b4(Te6edf3elementTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72while Tb4b4b4(Te6edf3element Tff7b72&& Te6edf3elementTb4b4b4.Te6edf3lastChildTb4b4b4) Te6edf3elementTb4b4b4.Te6edf3removeChildTb4b4b4(Te6edf3elementTb4b4b4.Te6edf3lastChildTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4;

T8b949e/**
* See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping
*/
Tff7b72const Te6edf3_escapeRegExp Tff7b72= Tb4b4b4(Te6edf3stringTb4b4b4) Tb4b4b4=>
Te6edf3stringTb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/[.*+\-?^${}()|[\]\\]/gTb4b4b4, Ta5d6ff"\\$&"Tb4b4b4)Tb4b4b4; T8b949e// $& means the whole matched string

Tff7b72const Te6edf3_displayItem Tff7b72= Tb4b4b4(Te6edf3itemTb4b4b4, Te6edf3searchTermsTb4b4b4, Te6edf3highlightTermsTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3docBuilder Tff7b72= Te6edf3DOCUMENTATION_OPTIONSTb4b4b4.Te6edf3BUILDERTb4b4b4;
Tff7b72const Te6edf3docFileSuffix Tff7b72= Te6edf3DOCUMENTATION_OPTIONSTb4b4b4.Te6edf3FILE_SUFFIXTb4b4b4;
Tff7b72const Te6edf3docLinkSuffix Tff7b72= Te6edf3DOCUMENTATION_OPTIONSTb4b4b4.Te6edf3LINK_SUFFIXTb4b4b4;
Tff7b72const Te6edf3showSearchSummary Tff7b72= Te6edf3DOCUMENTATION_OPTIONSTb4b4b4.Te6edf3SHOW_SEARCH_SUMMARYTb4b4b4;
Tff7b72const Te6edf3contentRoot Tff7b72= Tffa657documentTb4b4b4.Te6edf3documentElementTb4b4b4.Te6edf3datasetTb4b4b4.Te6edf3content_rootTb4b4b4;

Tff7b72const Tb4b4b4[Te6edf3docNameTb4b4b4, Te6edf3titleTb4b4b4, Te6edf3anchorTb4b4b4, Te6edf3descrTb4b4b4, Te6edf3scoreTb4b4b4, Te6edf3_filenameTb4b4b4, Te6edf3kindTb4b4b4] Tff7b72= Te6edf3itemTb4b4b4;

Tff7b72let Te6edf3listItem Tff7b72= Tffa657documentTb4b4b4.Te6edf3createElementTb4b4b4(Ta5d6ff"li"Tb4b4b4)Tb4b4b4;
T8b949e// Add a class representing the item's type:
T8b949e// can be used by a theme's CSS selector for styling
T8b949e// See SearchResultKind for the class names.
Te6edf3listItemTb4b4b4.Te6edf3classListTb4b4b4.Te6edf3addTb4b4b4(Ta5d6ff`Ta5d6ffkind-Tffd700${Te6edf3kindTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72let Te6edf3requestUrlTb4b4b4;
Tff7b72let Te6edf3linkUrlTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3docBuilder Tff7b72=== Ta5d6ff"dirhtml"Tb4b4b4) Tb4b4b4{
T8b949e// dirhtml builder
Tff7b72let Te6edf3dirname Tff7b72= Te6edf3docName Tff7b72+ Ta5d6ff"/"Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3dirnameTb4b4b4.Te6edf3matchTb4b4b4(Ta5d6ff/\/index\/$/Tb4b4b4)Tb4b4b4)
Te6edf3dirname Tff7b72= Te6edf3dirnameTb4b4b4.Te6edf3substringTb4b4b4(T79c0ff0Tb4b4b4, Te6edf3dirnameTb4b4b4.Te6edf3length Tff7b72- T79c0ff6Tb4b4b4)Tb4b4b4;
Tff7b72else Tff7b72if Tb4b4b4(Te6edf3dirname Tff7b72=== Ta5d6ff"index/"Tb4b4b4) Te6edf3dirname Tff7b72= Ta5d6ff""Tb4b4b4;
Te6edf3requestUrl Tff7b72= Te6edf3contentRoot Tff7b72+ Te6edf3dirnameTb4b4b4;
Te6edf3linkUrl Tff7b72= Te6edf3requestUrlTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
T8b949e// normal html builders
Te6edf3requestUrl Tff7b72= Te6edf3contentRoot Tff7b72+ Te6edf3docName Tff7b72+ Te6edf3docFileSuffixTb4b4b4;
Te6edf3linkUrl Tff7b72= Te6edf3docName Tff7b72+ Te6edf3docLinkSuffixTb4b4b4;
Tb4b4b4}
Tff7b72let Te6edf3linkEl Tff7b72= Te6edf3listItemTb4b4b4.Te6edf3appendChildTb4b4b4(Tffa657documentTb4b4b4.Te6edf3createElementTb4b4b4(Ta5d6ff"a"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3linkElTb4b4b4.Te6edf3href Tff7b72= Te6edf3linkUrl Tff7b72+ Te6edf3anchorTb4b4b4;
Te6edf3linkElTb4b4b4.Te6edf3datasetTb4b4b4.Te6edf3score Tff7b72= Te6edf3scoreTb4b4b4;
Te6edf3linkElTb4b4b4.Te6edf3innerHTML Tff7b72= Te6edf3titleTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3descrTb4b4b4) Tb4b4b4{
Te6edf3listItemTb4b4b4.Te6edf3appendChildTb4b4b4(Tffa657documentTb4b4b4.Te6edf3createElementTb4b4b4(Ta5d6ff"span"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3innerHTML Tff7b72=
Ta5d6ff" (" Tff7b72+ Te6edf3descr Tff7b72+ Ta5d6ff")"Tb4b4b4;
T8b949e// highlight search terms in the description
Tff7b72if Tb4b4b4(Te6edf3SPHINX_HIGHLIGHT_ENABLEDTb4b4b4) T8b949e// set in sphinx_highlight.js
Te6edf3highlightTermsTb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3termTb4b4b4) Tb4b4b4=> Te6edf3_highlightTextTb4b4b4(Te6edf3listItemTb4b4b4, Te6edf3termTb4b4b4, Ta5d6ff"highlighted"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72else Tff7b72if Tb4b4b4(Te6edf3showSearchSummaryTb4b4b4)
Te6edf3fetchTb4b4b4(Te6edf3requestUrlTb4b4b4)
Tb4b4b4.Te6edf3thenTb4b4b4(Tb4b4b4(Te6edf3responseDataTb4b4b4) Tb4b4b4=> Te6edf3responseDataTb4b4b4.Te6edf3textTb4b4b4(Tb4b4b4)Tb4b4b4)
Tb4b4b4.Te6edf3thenTb4b4b4(Tb4b4b4(Te6edf3dataTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3dataTb4b4b4)
Te6edf3listItemTb4b4b4.Te6edf3appendChildTb4b4b4(
Te6edf3SearchTb4b4b4.Te6edf3makeSearchSummaryTb4b4b4(Te6edf3dataTb4b4b4, Te6edf3searchTermsTb4b4b4, Te6edf3anchorTb4b4b4)
Tb4b4b4)Tb4b4b4;
T8b949e// highlight search terms in the summary
Tff7b72if Tb4b4b4(Te6edf3SPHINX_HIGHLIGHT_ENABLEDTb4b4b4) T8b949e// set in sphinx_highlight.js
Te6edf3highlightTermsTb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3termTb4b4b4) Tb4b4b4=> Te6edf3_highlightTextTb4b4b4(Te6edf3listItemTb4b4b4, Te6edf3termTb4b4b4, Ta5d6ff"highlighted"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3SearchTb4b4b4.Te6edf3outputTb4b4b4.Te6edf3appendChildTb4b4b4(Te6edf3listItemTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4;
Tff7b72const Te6edf3_finishSearch Tff7b72= Tb4b4b4(Te6edf3resultCountTb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3SearchTb4b4b4.Te6edf3stopPulseTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3SearchTb4b4b4.Te6edf3titleTb4b4b4.Te6edf3innerText Tff7b72= Te6edf3_Tb4b4b4(Ta5d6ff"Search Results"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3resultCountTb4b4b4)
Te6edf3SearchTb4b4b4.Te6edf3statusTb4b4b4.Te6edf3innerText Tff7b72= Te6edf3DocumentationTb4b4b4.Te6edf3gettextTb4b4b4(
Ta5d6ff"Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories."
Tb4b4b4)Tb4b4b4;
Tff7b72else
Te6edf3SearchTb4b4b4.Te6edf3statusTb4b4b4.Te6edf3innerText Tff7b72= Te6edf3DocumentationTb4b4b4.Te6edf3ngettextTb4b4b4(
Ta5d6ff"Search finished, found one page matching the search query."Tb4b4b4,
Ta5d6ff"Search finished, found ${resultCount} pages matching the search query."Tb4b4b4,
Te6edf3resultCountTb4b4b4,
Tb4b4b4)Tb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff'${resultCount}'Tb4b4b4, Te6edf3resultCountTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4;
Tff7b72const Te6edf3_displayNextItem Tff7b72= Tb4b4b4(
Te6edf3resultsTb4b4b4,
Te6edf3resultCountTb4b4b4,
Te6edf3searchTermsTb4b4b4,
Te6edf3highlightTermsTb4b4b4,
Tb4b4b4) Tb4b4b4=> Tb4b4b4{
T8b949e// results left, load the summary and display it
T8b949e// this is intended to be dynamic (don't sub resultsCount)
Tff7b72if Tb4b4b4(Te6edf3resultsTb4b4b4.Te6edf3lengthTb4b4b4) Tb4b4b4{
Te6edf3_displayItemTb4b4b4(Te6edf3resultsTb4b4b4.Te6edf3popTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3searchTermsTb4b4b4, Te6edf3highlightTermsTb4b4b4)Tb4b4b4;
Te6edf3setTimeoutTb4b4b4(
Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3_displayNextItemTb4b4b4(Te6edf3resultsTb4b4b4, Te6edf3resultCountTb4b4b4, Te6edf3searchTermsTb4b4b4, Te6edf3highlightTermsTb4b4b4)Tb4b4b4,
T79c0ff5
Tb4b4b4)Tb4b4b4;
Tb4b4b4}
T8b949e// search finished, update title and status message
Tff7b72else Te6edf3_finishSearchTb4b4b4(Te6edf3resultCountTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4;
T8b949e// Helper function used by query() to order search results.
T8b949e// Each input is an array of [docname, title, anchor, descr, score, filename, kind].
T8b949e// Order the results by score (in opposite order of appearance, since the
T8b949e// `_displayNextItem` function uses pop() to retrieve items) and then alphabetically.
Tff7b72const Te6edf3_orderResultsByScoreThenName Tff7b72= Tb4b4b4(Te6edf3aTb4b4b4, Te6edf3bTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3leftScore Tff7b72= Te6edf3aTb4b4b4[T79c0ff4Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3rightScore Tff7b72= Te6edf3bTb4b4b4[T79c0ff4Tb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3leftScore Tff7b72=== Te6edf3rightScoreTb4b4b4) Tb4b4b4{
T8b949e// same score: sort alphabetically
Tff7b72const Te6edf3leftTitle Tff7b72= Te6edf3aTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3rightTitle Tff7b72= Te6edf3bTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3leftTitle Tff7b72=== Te6edf3rightTitleTb4b4b4) Tff7b72return T79c0ff0Tb4b4b4;
Tff7b72return Te6edf3leftTitle Tff7b72> Te6edf3rightTitle Tff7b72? Tff7b72-T79c0ff1 Tff7b72: T79c0ff1Tb4b4b4; T8b949e// inverted is intentional
Tb4b4b4}
Tff7b72return Te6edf3leftScore Tff7b72> Te6edf3rightScore Tff7b72? T79c0ff1 Tff7b72: Tff7b72-T79c0ff1Tb4b4b4;
Tb4b4b4}Tb4b4b4;

T8b949e/**
* Default splitQuery function. Can be overridden in ``sphinx.search`` with a
* custom function per language.
*
* The regular expression works by splitting the string on consecutive characters
* that are not Unicode letters, numbers, underscores, or emoji characters.
* This is the same as ``\W+`` in Python, preserving the surrogate pair area.
*/
Tff7b72if Tb4b4b4(Tff7b72typeof Te6edf3splitQuery Tff7b72=== Ta5d6ff"undefined"Tb4b4b4) Tb4b4b4{
Tff7b72var Te6edf3splitQuery Tff7b72= Tb4b4b4(Te6edf3queryTb4b4b4) Tb4b4b4=> Te6edf3query
Tb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/guTb4b4b4)
Tb4b4b4.Te6edf3filterTb4b4b4(Te6edf3term Tb4b4b4=> Te6edf3termTb4b4b4) T8b949e// remove remaining empty strings
Tb4b4b4}

T8b949e/**
* Search Module
*/
Tff7b72const Te6edf3Search Tff7b72= Tb4b4b4{
Te6edf3_indexTff7b72: Tff7b72nullTb4b4b4,
Te6edf3_queued_queryTff7b72: Tff7b72nullTb4b4b4,
Te6edf3_pulse_statusTff7b72: Tff7b72-T79c0ff1Tb4b4b4,

Te6edf3htmlToTextTff7b72: Tb4b4b4(Te6edf3htmlStringTb4b4b4, Te6edf3anchorTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3htmlElement Tff7b72= Tff7b72new Te6edf3DOMParserTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3parseFromStringTb4b4b4(Te6edf3htmlStringTb4b4b4, Ta5d6ff'text/html'Tb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3removalQuery Tff7b72of Tb4b4b4[Ta5d6ff".headerlink"Tb4b4b4, Ta5d6ff"script"Tb4b4b4, Ta5d6ff"style"Tb4b4b4]Tb4b4b4) Tb4b4b4{
Te6edf3htmlElementTb4b4b4.Te6edf3querySelectorAllTb4b4b4(Te6edf3removalQueryTb4b4b4)Tb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3elTb4b4b4) Tb4b4b4=> Tb4b4b4{ Te6edf3elTb4b4b4.Te6edf3removeTb4b4b4(Tb4b4b4) Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3anchorTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3anchorContent Tff7b72= Te6edf3htmlElementTb4b4b4.Te6edf3querySelectorTb4b4b4(Ta5d6ff`Ta5d6ff[role="main"] Tffd700${Te6edf3anchorTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3anchorContentTb4b4b4) Tff7b72return Te6edf3anchorContentTb4b4b4.Te6edf3textContentTb4b4b4;

Te6edf3consoleTb4b4b4.Te6edf3warnTb4b4b4(
Ta5d6ff`Ta5d6ffAnchored content block not found. Sphinx search tries to obtain it via DOM query '[role=main] Tffd700${Te6edf3anchorTffd700}Ta5d6ff'. Check your theme or template.Ta5d6ff`
Tb4b4b4)Tb4b4b4;
Tb4b4b4}

T8b949e// if anchor not specified or not found, fall back to main content
Tff7b72const Te6edf3docContent Tff7b72= Te6edf3htmlElementTb4b4b4.Te6edf3querySelectorTb4b4b4(Ta5d6ff'[role="main"]'Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3docContentTb4b4b4) Tff7b72return Te6edf3docContentTb4b4b4.Te6edf3textContentTb4b4b4;

Te6edf3consoleTb4b4b4.Te6edf3warnTb4b4b4(
Ta5d6ff"Content block not found. Sphinx search tries to obtain it via DOM query '[role=main]'. Check your theme or template."
Tb4b4b4)Tb4b4b4;
Tff7b72return Ta5d6ff""Tb4b4b4;
Tb4b4b4}Tb4b4b4,

Te6edf3initTff7b72: Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3query Tff7b72= Tff7b72new Te6edf3URLSearchParamsTb4b4b4(Tffa657windowTb4b4b4.Te6edf3locationTb4b4b4.Te6edf3searchTb4b4b4)Tb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"q"Tb4b4b4)Tb4b4b4;
Tffa657document
Tb4b4b4.Te6edf3querySelectorAllTb4b4b4(Ta5d6ff'input[name="q"]'Tb4b4b4)
Tb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3elTb4b4b4) Tb4b4b4=> Tb4b4b4(Te6edf3elTb4b4b4.Te6edf3value Tff7b72= Te6edf3queryTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3queryTb4b4b4) Te6edf3SearchTb4b4b4.Te6edf3performSearchTb4b4b4(Te6edf3queryTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,

Te6edf3loadIndexTff7b72: Tb4b4b4(Te6edf3urlTb4b4b4) Tb4b4b4=>
Tb4b4b4(Tffa657documentTb4b4b4.Te6edf3bodyTb4b4b4.Te6edf3appendChildTb4b4b4(Tffa657documentTb4b4b4.Te6edf3createElementTb4b4b4(Ta5d6ff"script"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3src Tff7b72= Te6edf3urlTb4b4b4)Tb4b4b4,

Te6edf3setIndexTff7b72: Tb4b4b4(Te6edf3indexTb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3SearchTb4b4b4.Te6edf3_index Tff7b72= Te6edf3indexTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3SearchTb4b4b4.Te6edf3_queued_query Tff7b72!== Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3query Tff7b72= Te6edf3SearchTb4b4b4.Te6edf3_queued_queryTb4b4b4;
Te6edf3SearchTb4b4b4.Te6edf3_queued_query Tff7b72= Tff7b72nullTb4b4b4;
Te6edf3SearchTb4b4b4.Te6edf3queryTb4b4b4(Te6edf3queryTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,

Te6edf3hasIndexTff7b72: Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3SearchTb4b4b4.Te6edf3_index Tff7b72!== Tff7b72nullTb4b4b4,

Te6edf3deferQueryTff7b72: Tb4b4b4(Te6edf3queryTb4b4b4) Tb4b4b4=> Tb4b4b4(Te6edf3SearchTb4b4b4.Te6edf3_queued_query Tff7b72= Te6edf3queryTb4b4b4)Tb4b4b4,

Te6edf3stopPulseTff7b72: Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4(Te6edf3SearchTb4b4b4.Te6edf3_pulse_status Tff7b72= Tff7b72-T79c0ff1Tb4b4b4)Tb4b4b4,

Te6edf3startPulseTff7b72: Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3SearchTb4b4b4.Te6edf3_pulse_status Tff7b72>= T79c0ff0Tb4b4b4) Tff7b72returnTb4b4b4;

Tff7b72const Te6edf3pulse Tff7b72= Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3SearchTb4b4b4.Te6edf3_pulse_status Tff7b72= Tb4b4b4(Te6edf3SearchTb4b4b4.Te6edf3_pulse_status Tff7b72+ T79c0ff1Tb4b4b4) Tff7b72% T79c0ff4Tb4b4b4;
Te6edf3SearchTb4b4b4.Te6edf3dotsTb4b4b4.Te6edf3innerText Tff7b72= Ta5d6ff"."Tb4b4b4.Te6edf3repeatTb4b4b4(Te6edf3SearchTb4b4b4.Te6edf3_pulse_statusTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3SearchTb4b4b4.Te6edf3_pulse_status Tff7b72>= T79c0ff0Tb4b4b4) Tffa657windowTb4b4b4.Te6edf3setTimeoutTb4b4b4(Te6edf3pulseTb4b4b4, T79c0ff500Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4;
Te6edf3pulseTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,

T8b949e/**
* perform a search for something (or wait until index is loaded)
*/
Te6edf3performSearchTff7b72: Tb4b4b4(Te6edf3queryTb4b4b4) Tb4b4b4=> Tb4b4b4{
T8b949e// create the required interface elements
Tff7b72const Te6edf3searchText Tff7b72= Tffa657documentTb4b4b4.Te6edf3createElementTb4b4b4(Ta5d6ff"h2"Tb4b4b4)Tb4b4b4;
Te6edf3searchTextTb4b4b4.Te6edf3textContent Tff7b72= Te6edf3_Tb4b4b4(Ta5d6ff"Searching"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3searchSummary Tff7b72= Tffa657documentTb4b4b4.Te6edf3createElementTb4b4b4(Ta5d6ff"p"Tb4b4b4)Tb4b4b4;
Te6edf3searchSummaryTb4b4b4.Te6edf3classListTb4b4b4.Te6edf3addTb4b4b4(Ta5d6ff"search-summary"Tb4b4b4)Tb4b4b4;
Te6edf3searchSummaryTb4b4b4.Te6edf3innerText Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72const Te6edf3searchList Tff7b72= Tffa657documentTb4b4b4.Te6edf3createElementTb4b4b4(Ta5d6ff"ul"Tb4b4b4)Tb4b4b4;
Te6edf3searchListTb4b4b4.Te6edf3setAttributeTb4b4b4(Ta5d6ff"role"Tb4b4b4, Ta5d6ff"list"Tb4b4b4)Tb4b4b4;
Te6edf3searchListTb4b4b4.Te6edf3classListTb4b4b4.Te6edf3addTb4b4b4(Ta5d6ff"search"Tb4b4b4)Tb4b4b4;

Tff7b72const Te6edf3out Tff7b72= Tffa657documentTb4b4b4.Te6edf3getElementByIdTb4b4b4(Ta5d6ff"search-results"Tb4b4b4)Tb4b4b4;
Te6edf3SearchTb4b4b4.Te6edf3title Tff7b72= Te6edf3outTb4b4b4.Te6edf3appendChildTb4b4b4(Te6edf3searchTextTb4b4b4)Tb4b4b4;
Te6edf3SearchTb4b4b4.Te6edf3dots Tff7b72= Te6edf3SearchTb4b4b4.Te6edf3titleTb4b4b4.Te6edf3appendChildTb4b4b4(Tffa657documentTb4b4b4.Te6edf3createElementTb4b4b4(Ta5d6ff"span"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3SearchTb4b4b4.Te6edf3status Tff7b72= Te6edf3outTb4b4b4.Te6edf3appendChildTb4b4b4(Te6edf3searchSummaryTb4b4b4)Tb4b4b4;
Te6edf3SearchTb4b4b4.Te6edf3output Tff7b72= Te6edf3outTb4b4b4.Te6edf3appendChildTb4b4b4(Te6edf3searchListTb4b4b4)Tb4b4b4;

Tff7b72const Te6edf3searchProgress Tff7b72= Tffa657documentTb4b4b4.Te6edf3getElementByIdTb4b4b4(Ta5d6ff"search-progress"Tb4b4b4)Tb4b4b4;
T8b949e// Some themes don't use the search progress node
Tff7b72if Tb4b4b4(Te6edf3searchProgressTb4b4b4) Tb4b4b4{
Te6edf3searchProgressTb4b4b4.Te6edf3innerText Tff7b72= Te6edf3_Tb4b4b4(Ta5d6ff"Preparing search..."Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3SearchTb4b4b4.Te6edf3startPulseTb4b4b4(Tb4b4b4)Tb4b4b4;

T8b949e// index already loaded, the browser was quick!
Tff7b72if Tb4b4b4(Te6edf3SearchTb4b4b4.Te6edf3hasIndexTb4b4b4(Tb4b4b4)Tb4b4b4) Te6edf3SearchTb4b4b4.Te6edf3queryTb4b4b4(Te6edf3queryTb4b4b4)Tb4b4b4;
Tff7b72else Te6edf3SearchTb4b4b4.Te6edf3deferQueryTb4b4b4(Te6edf3queryTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,

Te6edf3_parseQueryTff7b72: Tb4b4b4(Te6edf3queryTb4b4b4) Tb4b4b4=> Tb4b4b4{
T8b949e// stem the search terms and add them to the correct list
Tff7b72const Te6edf3stemmer Tff7b72= Tff7b72new Te6edf3StemmerTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3searchTerms Tff7b72= Tff7b72new Tffa657SetTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3excludedTerms Tff7b72= Tff7b72new Tffa657SetTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3highlightTerms Tff7b72= Tff7b72new Tffa657SetTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3objectTerms Tff7b72= Tff7b72new Tffa657SetTb4b4b4(Te6edf3splitQueryTb4b4b4(Te6edf3queryTb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3splitQueryTb4b4b4(Te6edf3queryTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3queryTermTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3queryTermLower Tff7b72= Te6edf3queryTermTb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4;

T8b949e// maybe skip this "word"
T8b949e// stopwords array is from language_data.js
Tff7b72if Tb4b4b4(
Te6edf3stopwordsTb4b4b4.Te6edf3indexOfTb4b4b4(Te6edf3queryTermLowerTb4b4b4) Tff7b72!== Tff7b72-T79c0ff1 Tff7b72||
Te6edf3queryTermTb4b4b4.Te6edf3matchTb4b4b4(Ta5d6ff/^\d+$/Tb4b4b4)
Tb4b4b4)
Tff7b72returnTb4b4b4;

T8b949e// stem the word
Tff7b72let Te6edf3word Tff7b72= Te6edf3stemmerTb4b4b4.Te6edf3stemWordTb4b4b4(Te6edf3queryTermLowerTb4b4b4)Tb4b4b4;
T8b949e// select the correct list
Tff7b72if Tb4b4b4(Te6edf3wordTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72=== Ta5d6ff"-"Tb4b4b4) Te6edf3excludedTermsTb4b4b4.Te6edf3addTb4b4b4(Te6edf3wordTb4b4b4.Te6edf3substrTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72else Tb4b4b4{
Te6edf3searchTermsTb4b4b4.Te6edf3addTb4b4b4(Te6edf3wordTb4b4b4)Tb4b4b4;
Te6edf3highlightTermsTb4b4b4.Te6edf3addTb4b4b4(Te6edf3queryTermLowerTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4;

Tff7b72if Tb4b4b4(Te6edf3SPHINX_HIGHLIGHT_ENABLEDTb4b4b4) Tb4b4b4{ T8b949e// set in sphinx_highlight.js
Te6edf3localStorageTb4b4b4.Te6edf3setItemTb4b4b4(Ta5d6ff"sphinx_highlight_terms"Tb4b4b4, Tb4b4b4[Tb4b4b4...Te6edf3highlightTermsTb4b4b4]Tb4b4b4.Te6edf3joinTb4b4b4(Ta5d6ff" "Tb4b4b4)Tb4b4b4)
Tb4b4b4}

T8b949e// console.debug("SEARCH: searching for:");
T8b949e// console.info("required: ", [...searchTerms]);
T8b949e// console.info("excluded: ", [...excludedTerms]);

Tff7b72return Tb4b4b4[Te6edf3queryTb4b4b4, Te6edf3searchTermsTb4b4b4, Te6edf3excludedTermsTb4b4b4, Te6edf3highlightTermsTb4b4b4, Te6edf3objectTermsTb4b4b4]Tb4b4b4;
Tb4b4b4}Tb4b4b4,

T8b949e/**
* execute search (requires search index to be loaded)
*/
Te6edf3_performSearchTff7b72: Tb4b4b4(Te6edf3queryTb4b4b4, Te6edf3searchTermsTb4b4b4, Te6edf3excludedTermsTb4b4b4, Te6edf3highlightTermsTb4b4b4, Te6edf3objectTermsTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3filenames Tff7b72= Te6edf3SearchTb4b4b4.Te6edf3_indexTb4b4b4.Te6edf3filenamesTb4b4b4;
Tff7b72const Te6edf3docNames Tff7b72= Te6edf3SearchTb4b4b4.Te6edf3_indexTb4b4b4.Te6edf3docnamesTb4b4b4;
Tff7b72const Te6edf3titles Tff7b72= Te6edf3SearchTb4b4b4.Te6edf3_indexTb4b4b4.Te6edf3titlesTb4b4b4;
Tff7b72const Te6edf3allTitles Tff7b72= Te6edf3SearchTb4b4b4.Te6edf3_indexTb4b4b4.Te6edf3alltitlesTb4b4b4;
Tff7b72const Te6edf3indexEntries Tff7b72= Te6edf3SearchTb4b4b4.Te6edf3_indexTb4b4b4.Te6edf3indexentriesTb4b4b4;

T8b949e// Collect multiple result groups to be sorted separately and then ordered.
T8b949e// Each is an array of [docname, title, anchor, descr, score, filename, kind].
Tff7b72const Te6edf3normalResults Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3nonMainIndexResults Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;

Te6edf3_removeChildrenTb4b4b4(Tffa657documentTb4b4b4.Te6edf3getElementByIdTb4b4b4(Ta5d6ff"search-progress"Tb4b4b4)Tb4b4b4)Tb4b4b4;

Tff7b72const Te6edf3queryLower Tff7b72= Te6edf3queryTb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Tb4b4b4[Te6edf3titleTb4b4b4, Te6edf3foundTitlesTb4b4b4] Tff7b72of Tffa657ObjectTb4b4b4.Te6edf3entriesTb4b4b4(Te6edf3allTitlesTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3titleTb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3queryLowerTb4b4b4) Tff7b72&& Tb4b4b4(Te6edf3queryLowerTb4b4b4.Te6edf3length Tff7b72>= Te6edf3titleTb4b4b4.Te6edf3lengthTff7b72/T79c0ff2Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72for Tb4b4b4(Tff7b72const Tb4b4b4[Te6edf3fileTb4b4b4, Te6edf3idTb4b4b4] Tff7b72of Te6edf3foundTitlesTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3score Tff7b72= Tffa657MathTb4b4b4.Te6edf3roundTb4b4b4(Te6edf3ScorerTb4b4b4.Te6edf3title Tff7b72* Te6edf3queryLowerTb4b4b4.Te6edf3length Tff7b72/ Te6edf3titleTb4b4b4.Te6edf3lengthTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3boost Tff7b72= Te6edf3titlesTb4b4b4[Te6edf3fileTb4b4b4] Tff7b72=== Te6edf3title Tff7b72? T79c0ff1 Tff7b72: T79c0ff0Tb4b4b4; T8b949e// add a boost for document titles
Te6edf3normalResultsTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4[
Te6edf3docNamesTb4b4b4[Te6edf3fileTb4b4b4]Tb4b4b4,
Te6edf3titlesTb4b4b4[Te6edf3fileTb4b4b4] Tff7b72!== Te6edf3title Tff7b72? Ta5d6ff`Tffd700${Te6edf3titlesTb4b4b4[Te6edf3fileTb4b4b4]Tffd700}Ta5d6ff > Tffd700${Te6edf3titleTffd700}Ta5d6ff` Tff7b72: Te6edf3titleTb4b4b4,
Te6edf3id Tff7b72!== Tff7b72null Tff7b72? Ta5d6ff"#" Tff7b72+ Te6edf3id Tff7b72: Ta5d6ff""Tb4b4b4,
Tff7b72nullTb4b4b4,
Te6edf3score Tff7b72+ Te6edf3boostTb4b4b4,
Te6edf3filenamesTb4b4b4[Te6edf3fileTb4b4b4]Tb4b4b4,
Te6edf3SearchResultKindTb4b4b4.Te6edf3titleTb4b4b4,
Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

T8b949e// search for explicit entries in index directives
Tff7b72for Tb4b4b4(Tff7b72const Tb4b4b4[Te6edf3entryTb4b4b4, Te6edf3foundEntriesTb4b4b4] Tff7b72of Tffa657ObjectTb4b4b4.Te6edf3entriesTb4b4b4(Te6edf3indexEntriesTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3entryTb4b4b4.Te6edf3includesTb4b4b4(Te6edf3queryLowerTb4b4b4) Tff7b72&& Tb4b4b4(Te6edf3queryLowerTb4b4b4.Te6edf3length Tff7b72>= Te6edf3entryTb4b4b4.Te6edf3lengthTff7b72/T79c0ff2Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72for Tb4b4b4(Tff7b72const Tb4b4b4[Te6edf3fileTb4b4b4, Te6edf3idTb4b4b4, Te6edf3isMainTb4b4b4] Tff7b72of Te6edf3foundEntriesTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3score Tff7b72= Tffa657MathTb4b4b4.Te6edf3roundTb4b4b4(T79c0ff100 Tff7b72* Te6edf3queryLowerTb4b4b4.Te6edf3length Tff7b72/ Te6edf3entryTb4b4b4.Te6edf3lengthTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3result Tff7b72= Tb4b4b4[
Te6edf3docNamesTb4b4b4[Te6edf3fileTb4b4b4]Tb4b4b4,
Te6edf3titlesTb4b4b4[Te6edf3fileTb4b4b4]Tb4b4b4,
Te6edf3id Tff7b72? Ta5d6ff"#" Tff7b72+ Te6edf3id Tff7b72: Ta5d6ff""Tb4b4b4,
Tff7b72nullTb4b4b4,
Te6edf3scoreTb4b4b4,
Te6edf3filenamesTb4b4b4[Te6edf3fileTb4b4b4]Tb4b4b4,
Te6edf3SearchResultKindTb4b4b4.Te6edf3indexTb4b4b4,
Tb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3isMainTb4b4b4) Tb4b4b4{
Te6edf3normalResultsTb4b4b4.Te6edf3pushTb4b4b4(Te6edf3resultTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3nonMainIndexResultsTb4b4b4.Te6edf3pushTb4b4b4(Te6edf3resultTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

T8b949e// lookup as object
Te6edf3objectTermsTb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3termTb4b4b4) Tb4b4b4=>
Te6edf3normalResultsTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4...Te6edf3SearchTb4b4b4.Te6edf3performObjectSearchTb4b4b4(Te6edf3termTb4b4b4, Te6edf3objectTermsTb4b4b4)Tb4b4b4)
Tb4b4b4)Tb4b4b4;

T8b949e// lookup as search terms in fulltext
Te6edf3normalResultsTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4...Te6edf3SearchTb4b4b4.Te6edf3performTermsSearchTb4b4b4(Te6edf3searchTermsTb4b4b4, Te6edf3excludedTermsTb4b4b4)Tb4b4b4)Tb4b4b4;

T8b949e// let the scorer override scores with a custom scoring function
Tff7b72if Tb4b4b4(Te6edf3ScorerTb4b4b4.Te6edf3scoreTb4b4b4) Tb4b4b4{
Te6edf3normalResultsTb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3itemTb4b4b4) Tb4b4b4=> Tb4b4b4(Te6edf3itemTb4b4b4[T79c0ff4Tb4b4b4] Tff7b72= Te6edf3ScorerTb4b4b4.Te6edf3scoreTb4b4b4(Te6edf3itemTb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3nonMainIndexResultsTb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3itemTb4b4b4) Tb4b4b4=> Tb4b4b4(Te6edf3itemTb4b4b4[T79c0ff4Tb4b4b4] Tff7b72= Te6edf3ScorerTb4b4b4.Te6edf3scoreTb4b4b4(Te6edf3itemTb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}

T8b949e// Sort each group of results by score and then alphabetically by name.
Te6edf3normalResultsTb4b4b4.Te6edf3sortTb4b4b4(Te6edf3_orderResultsByScoreThenNameTb4b4b4)Tb4b4b4;
Te6edf3nonMainIndexResultsTb4b4b4.Te6edf3sortTb4b4b4(Te6edf3_orderResultsByScoreThenNameTb4b4b4)Tb4b4b4;

T8b949e// Combine the result groups in (reverse) order.
T8b949e// Non-main index entries are typically arbitrary cross-references,
T8b949e// so display them after other results.
Tff7b72let Te6edf3results Tff7b72= Tb4b4b4[Tb4b4b4...Te6edf3nonMainIndexResultsTb4b4b4, Tb4b4b4...Te6edf3normalResultsTb4b4b4]Tb4b4b4;

T8b949e// remove duplicate search results
T8b949e// note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept
Tff7b72let Te6edf3seen Tff7b72= Tff7b72new Tffa657SetTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3results Tff7b72= Te6edf3resultsTb4b4b4.Te6edf3reverseTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3reduceTb4b4b4(Tb4b4b4(Te6edf3accTb4b4b4, Te6edf3resultTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72let Te6edf3resultStr Tff7b72= Te6edf3resultTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff4Tb4b4b4)Tb4b4b4.Te6edf3concatTb4b4b4(Tb4b4b4[Te6edf3resultTb4b4b4[T79c0ff5Tb4b4b4]Tb4b4b4]Tb4b4b4)Tb4b4b4.Te6edf3mapTb4b4b4(Te6edf3v Tb4b4b4=> Tffa657StringTb4b4b4(Te6edf3vTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3joinTb4b4b4(Ta5d6ff','Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3seenTb4b4b4.Te6edf3hasTb4b4b4(Te6edf3resultStrTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3accTb4b4b4.Te6edf3pushTb4b4b4(Te6edf3resultTb4b4b4)Tb4b4b4;
Te6edf3seenTb4b4b4.Te6edf3addTb4b4b4(Te6edf3resultStrTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3accTb4b4b4;
Tb4b4b4}Tb4b4b4, Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4;

Tff7b72return Te6edf3resultsTb4b4b4.Te6edf3reverseTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,

Te6edf3queryTff7b72: Tb4b4b4(Te6edf3queryTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Tb4b4b4[Te6edf3searchQueryTb4b4b4, Te6edf3searchTermsTb4b4b4, Te6edf3excludedTermsTb4b4b4, Te6edf3highlightTermsTb4b4b4, Te6edf3objectTermsTb4b4b4] Tff7b72= Te6edf3SearchTb4b4b4.Te6edf3_parseQueryTb4b4b4(Te6edf3queryTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3results Tff7b72= Te6edf3SearchTb4b4b4.Te6edf3_performSearchTb4b4b4(Te6edf3searchQueryTb4b4b4, Te6edf3searchTermsTb4b4b4, Te6edf3excludedTermsTb4b4b4, Te6edf3highlightTermsTb4b4b4, Te6edf3objectTermsTb4b4b4)Tb4b4b4;

T8b949e// for debugging
T8b949e//Search.lastresults = results.slice(); // a copy
T8b949e// console.info("search results:", Search.lastresults);

T8b949e// print the results
Te6edf3_displayNextItemTb4b4b4(Te6edf3resultsTb4b4b4, Te6edf3resultsTb4b4b4.Te6edf3lengthTb4b4b4, Te6edf3searchTermsTb4b4b4, Te6edf3highlightTermsTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,

T8b949e/**
* search for object names
*/
Te6edf3performObjectSearchTff7b72: Tb4b4b4(Te6edf3objectTb4b4b4, Te6edf3objectTermsTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3filenames Tff7b72= Te6edf3SearchTb4b4b4.Te6edf3_indexTb4b4b4.Te6edf3filenamesTb4b4b4;
Tff7b72const Te6edf3docNames Tff7b72= Te6edf3SearchTb4b4b4.Te6edf3_indexTb4b4b4.Te6edf3docnamesTb4b4b4;
Tff7b72const Te6edf3objects Tff7b72= Te6edf3SearchTb4b4b4.Te6edf3_indexTb4b4b4.Te6edf3objectsTb4b4b4;
Tff7b72const Te6edf3objNames Tff7b72= Te6edf3SearchTb4b4b4.Te6edf3_indexTb4b4b4.Te6edf3objnamesTb4b4b4;
Tff7b72const Te6edf3titles Tff7b72= Te6edf3SearchTb4b4b4.Te6edf3_indexTb4b4b4.Te6edf3titlesTb4b4b4;

Tff7b72const Te6edf3results Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;

Tff7b72const Te6edf3objectSearchCallback Tff7b72= Tb4b4b4(Te6edf3prefixTb4b4b4, Te6edf3matchTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3name Tff7b72= Te6edf3matchTb4b4b4[T79c0ff4Tb4b4b4]
Tff7b72const Te6edf3fullname Tff7b72= Tb4b4b4(Te6edf3prefix Tff7b72? Te6edf3prefix Tff7b72+ Ta5d6ff"." Tff7b72: Ta5d6ff""Tb4b4b4) Tff7b72+ Te6edf3nameTb4b4b4;
Tff7b72const Te6edf3fullnameLower Tff7b72= Te6edf3fullnameTb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3fullnameLowerTb4b4b4.Te6edf3indexOfTb4b4b4(Te6edf3objectTb4b4b4) Tff7b72< T79c0ff0Tb4b4b4) Tff7b72returnTb4b4b4;

Tff7b72let Te6edf3score Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72const Te6edf3parts Tff7b72= Te6edf3fullnameLowerTb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff"."Tb4b4b4)Tb4b4b4;

T8b949e// check for different match types: exact matches of full name or
T8b949e// "last name" (i.e. last dotted part)
Tff7b72if Tb4b4b4(Te6edf3fullnameLower Tff7b72=== Te6edf3object Tff7b72|| Te6edf3partsTb4b4b4.Te6edf3sliceTb4b4b4(Tff7b72-T79c0ff1Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4] Tff7b72=== Te6edf3objectTb4b4b4)
Te6edf3score Tff7b72+= Te6edf3ScorerTb4b4b4.Te6edf3objNameMatchTb4b4b4;
Tff7b72else Tff7b72if Tb4b4b4(Te6edf3partsTb4b4b4.Te6edf3sliceTb4b4b4(Tff7b72-T79c0ff1Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4.Te6edf3indexOfTb4b4b4(Te6edf3objectTb4b4b4) Tff7b72> Tff7b72-T79c0ff1Tb4b4b4)
Te6edf3score Tff7b72+= Te6edf3ScorerTb4b4b4.Te6edf3objPartialMatchTb4b4b4; T8b949e// matches in last name

Tff7b72const Te6edf3objName Tff7b72= Te6edf3objNamesTb4b4b4[Te6edf3matchTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4]Tb4b4b4[T79c0ff2Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3title Tff7b72= Te6edf3titlesTb4b4b4[Te6edf3matchTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4]Tb4b4b4;

T8b949e// If more than one term searched for, we require other words to be
T8b949e// found in the name/title/description
Tff7b72const Te6edf3otherTerms Tff7b72= Tff7b72new Tffa657SetTb4b4b4(Te6edf3objectTermsTb4b4b4)Tb4b4b4;
Te6edf3otherTermsTb4b4b4.Tff7b72deleteTb4b4b4(Te6edf3objectTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3otherTermsTb4b4b4.Te6edf3size Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3haystack Tff7b72= Ta5d6ff`Tffd700${Te6edf3prefixTffd700}Ta5d6ff Tffd700${Te6edf3nameTffd700}Ta5d6ff Tffd700${Te6edf3objNameTffd700}Ta5d6ff Tffd700${Te6edf3titleTffd700}Ta5d6ff`Tb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(
Tb4b4b4[Tb4b4b4...Te6edf3otherTermsTb4b4b4]Tb4b4b4.Te6edf3someTb4b4b4(Tb4b4b4(Te6edf3otherTermTb4b4b4) Tb4b4b4=> Te6edf3haystackTb4b4b4.Te6edf3indexOfTb4b4b4(Te6edf3otherTermTb4b4b4) Tff7b72< T79c0ff0Tb4b4b4)
Tb4b4b4)
Tff7b72returnTb4b4b4;
Tb4b4b4}

Tff7b72let Te6edf3anchor Tff7b72= Te6edf3matchTb4b4b4[T79c0ff3Tb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3anchor Tff7b72=== Ta5d6ff""Tb4b4b4) Te6edf3anchor Tff7b72= Te6edf3fullnameTb4b4b4;
Tff7b72else Tff7b72if Tb4b4b4(Te6edf3anchor Tff7b72=== Ta5d6ff"-"Tb4b4b4) Te6edf3anchor Tff7b72= Te6edf3objNamesTb4b4b4[Te6edf3matchTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4]Tb4b4b4[T79c0ff1Tb4b4b4] Tff7b72+ Ta5d6ff"-" Tff7b72+ Te6edf3fullnameTb4b4b4;

Tff7b72const Te6edf3descr Tff7b72= Te6edf3objName Tff7b72+ Te6edf3_Tb4b4b4(Ta5d6ff", in "Tb4b4b4) Tff7b72+ Te6edf3titleTb4b4b4;

T8b949e// add custom score for some objects according to scorer
Tff7b72if Tb4b4b4(Te6edf3ScorerTb4b4b4.Te6edf3objPrioTb4b4b4.Te6edf3hasOwnPropertyTb4b4b4(Te6edf3matchTb4b4b4[T79c0ff2Tb4b4b4]Tb4b4b4)Tb4b4b4)
Te6edf3score Tff7b72+= Te6edf3ScorerTb4b4b4.Te6edf3objPrioTb4b4b4[Te6edf3matchTb4b4b4[T79c0ff2Tb4b4b4]Tb4b4b4]Tb4b4b4;
Tff7b72else Te6edf3score Tff7b72+= Te6edf3ScorerTb4b4b4.Te6edf3objPrioDefaultTb4b4b4;

Te6edf3resultsTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4[
Te6edf3docNamesTb4b4b4[Te6edf3matchTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4]Tb4b4b4,
Te6edf3fullnameTb4b4b4,
Ta5d6ff"#" Tff7b72+ Te6edf3anchorTb4b4b4,
Te6edf3descrTb4b4b4,
Te6edf3scoreTb4b4b4,
Te6edf3filenamesTb4b4b4[Te6edf3matchTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4]Tb4b4b4,
Te6edf3SearchResultKindTb4b4b4.Te6edf3objectTb4b4b4,
Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4;
Tffa657ObjectTb4b4b4.Te6edf3keysTb4b4b4(Te6edf3objectsTb4b4b4)Tb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3prefixTb4b4b4) Tb4b4b4=>
Te6edf3objectsTb4b4b4[Te6edf3prefixTb4b4b4]Tb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3arrayTb4b4b4) Tb4b4b4=>
Te6edf3objectSearchCallbackTb4b4b4(Te6edf3prefixTb4b4b4, Te6edf3arrayTb4b4b4)
Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3resultsTb4b4b4;
Tb4b4b4}Tb4b4b4,

T8b949e/**
* search for full-text terms in the index
*/
Te6edf3performTermsSearchTff7b72: Tb4b4b4(Te6edf3searchTermsTb4b4b4, Te6edf3excludedTermsTb4b4b4) Tb4b4b4=> Tb4b4b4{
T8b949e// prepare search
Tff7b72const Te6edf3terms Tff7b72= Te6edf3SearchTb4b4b4.Te6edf3_indexTb4b4b4.Te6edf3termsTb4b4b4;
Tff7b72const Te6edf3titleTerms Tff7b72= Te6edf3SearchTb4b4b4.Te6edf3_indexTb4b4b4.Te6edf3titletermsTb4b4b4;
Tff7b72const Te6edf3filenames Tff7b72= Te6edf3SearchTb4b4b4.Te6edf3_indexTb4b4b4.Te6edf3filenamesTb4b4b4;
Tff7b72const Te6edf3docNames Tff7b72= Te6edf3SearchTb4b4b4.Te6edf3_indexTb4b4b4.Te6edf3docnamesTb4b4b4;
Tff7b72const Te6edf3titles Tff7b72= Te6edf3SearchTb4b4b4.Te6edf3_indexTb4b4b4.Te6edf3titlesTb4b4b4;

Tff7b72const Te6edf3scoreMap Tff7b72= Tff7b72new Tffa657MapTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3fileMap Tff7b72= Tff7b72new Tffa657MapTb4b4b4(Tb4b4b4)Tb4b4b4;

T8b949e// perform the search on the required terms
Te6edf3searchTermsTb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3wordTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3files Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
T8b949e// find documents, if any, containing the query word in their text/title term indices
T8b949e// use Object.hasOwnProperty to avoid mismatching against prototype properties
Tff7b72const Te6edf3arr Tff7b72= Tb4b4b4[
Tb4b4b4{ Te6edf3filesTff7b72: Te6edf3termsTb4b4b4.Te6edf3hasOwnPropertyTb4b4b4(Te6edf3wordTb4b4b4) Tff7b72? Te6edf3termsTb4b4b4[Te6edf3wordTb4b4b4] Tff7b72: Tff7b72undefinedTb4b4b4, Te6edf3scoreTff7b72: Te6edf3ScorerTb4b4b4.Te6edf3term Tb4b4b4}Tb4b4b4,
Tb4b4b4{ Te6edf3filesTff7b72: Te6edf3titleTermsTb4b4b4.Te6edf3hasOwnPropertyTb4b4b4(Te6edf3wordTb4b4b4) Tff7b72? Te6edf3titleTermsTb4b4b4[Te6edf3wordTb4b4b4] Tff7b72: Tff7b72undefinedTb4b4b4, Te6edf3scoreTff7b72: Te6edf3ScorerTb4b4b4.Te6edf3title Tb4b4b4}Tb4b4b4,
Tb4b4b4]Tb4b4b4;
T8b949e// add support for partial matches
Tff7b72if Tb4b4b4(Te6edf3wordTb4b4b4.Te6edf3length Tff7b72> T79c0ff2Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3escapedWord Tff7b72= Te6edf3_escapeRegExpTb4b4b4(Te6edf3wordTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3termsTb4b4b4.Te6edf3hasOwnPropertyTb4b4b4(Te6edf3wordTb4b4b4)Tb4b4b4) Tb4b4b4{
Tffa657ObjectTb4b4b4.Te6edf3keysTb4b4b4(Te6edf3termsTb4b4b4)Tb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3termTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3termTb4b4b4.Te6edf3matchTb4b4b4(Te6edf3escapedWordTb4b4b4)Tb4b4b4)
Te6edf3arrTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{ Te6edf3filesTff7b72: Te6edf3termsTb4b4b4[Te6edf3termTb4b4b4]Tb4b4b4, Te6edf3scoreTff7b72: Te6edf3ScorerTb4b4b4.Te6edf3partialTerm Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3titleTermsTb4b4b4.Te6edf3hasOwnPropertyTb4b4b4(Te6edf3wordTb4b4b4)Tb4b4b4) Tb4b4b4{
Tffa657ObjectTb4b4b4.Te6edf3keysTb4b4b4(Te6edf3titleTermsTb4b4b4)Tb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3termTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3termTb4b4b4.Te6edf3matchTb4b4b4(Te6edf3escapedWordTb4b4b4)Tb4b4b4)
Te6edf3arrTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{ Te6edf3filesTff7b72: Te6edf3titleTermsTb4b4b4[Te6edf3termTb4b4b4]Tb4b4b4, Te6edf3scoreTff7b72: Te6edf3ScorerTb4b4b4.Te6edf3partialTitle Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}

T8b949e// no match but word was a required one
Tff7b72if Tb4b4b4(Te6edf3arrTb4b4b4.Te6edf3everyTb4b4b4(Tb4b4b4(Te6edf3recordTb4b4b4) Tb4b4b4=> Te6edf3recordTb4b4b4.Te6edf3files Tff7b72=== Tff7b72undefinedTb4b4b4)Tb4b4b4) Tff7b72returnTb4b4b4;

T8b949e// found search word in contents
Te6edf3arrTb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3recordTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3recordTb4b4b4.Te6edf3files Tff7b72=== Tff7b72undefinedTb4b4b4) Tff7b72returnTb4b4b4;

Tff7b72let Te6edf3recordFiles Tff7b72= Te6edf3recordTb4b4b4.Te6edf3filesTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3recordFilesTb4b4b4.Te6edf3length Tff7b72=== Tff7b72undefinedTb4b4b4) Te6edf3recordFiles Tff7b72= Tb4b4b4[Te6edf3recordFilesTb4b4b4]Tb4b4b4;
Te6edf3filesTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4...Te6edf3recordFilesTb4b4b4)Tb4b4b4;

T8b949e// set score for the word in each file
Te6edf3recordFilesTb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3fileTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3scoreMapTb4b4b4.Te6edf3hasTb4b4b4(Te6edf3fileTb4b4b4)Tb4b4b4) Te6edf3scoreMapTb4b4b4.Te6edf3setTb4b4b4(Te6edf3fileTb4b4b4, Tff7b72new Tffa657MapTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3fileScores Tff7b72= Te6edf3scoreMapTb4b4b4.Te6edf3getTb4b4b4(Te6edf3fileTb4b4b4)Tb4b4b4;
Te6edf3fileScoresTb4b4b4.Te6edf3setTb4b4b4(Te6edf3wordTb4b4b4, Te6edf3recordTb4b4b4.Te6edf3scoreTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

T8b949e// create the mapping
Te6edf3filesTb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3fileTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3fileMapTb4b4b4.Te6edf3hasTb4b4b4(Te6edf3fileTb4b4b4)Tb4b4b4) Te6edf3fileMapTb4b4b4.Te6edf3setTb4b4b4(Te6edf3fileTb4b4b4, Tb4b4b4[Te6edf3wordTb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72else Tff7b72if Tb4b4b4(Te6edf3fileMapTb4b4b4.Te6edf3getTb4b4b4(Te6edf3fileTb4b4b4)Tb4b4b4.Te6edf3indexOfTb4b4b4(Te6edf3wordTb4b4b4) Tff7b72=== Tff7b72-T79c0ff1Tb4b4b4) Te6edf3fileMapTb4b4b4.Te6edf3getTb4b4b4(Te6edf3fileTb4b4b4)Tb4b4b4.Te6edf3pushTb4b4b4(Te6edf3wordTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;

T8b949e// now check if the files don't contain excluded terms
Tff7b72const Te6edf3results Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Tb4b4b4[Te6edf3fileTb4b4b4, Te6edf3wordListTb4b4b4] Tff7b72of Te6edf3fileMapTb4b4b4) Tb4b4b4{
T8b949e// check if all requirements are matched

T8b949e// as search terms with length < 3 are discarded
Tff7b72const Te6edf3filteredTermCount Tff7b72= Tb4b4b4[Tb4b4b4...Te6edf3searchTermsTb4b4b4]Tb4b4b4.Te6edf3filterTb4b4b4(
Tb4b4b4(Te6edf3termTb4b4b4) Tb4b4b4=> Te6edf3termTb4b4b4.Te6edf3length Tff7b72> T79c0ff2
Tb4b4b4)Tb4b4b4.Te6edf3lengthTb4b4b4;
Tff7b72if Tb4b4b4(
Te6edf3wordListTb4b4b4.Te6edf3length Tff7b72!== Te6edf3searchTermsTb4b4b4.Te6edf3size Tff7b72&&
Te6edf3wordListTb4b4b4.Te6edf3length Tff7b72!== Te6edf3filteredTermCount
Tb4b4b4)
Tff7b72continueTb4b4b4;

T8b949e// ensure that none of the excluded terms is in the search result
Tff7b72if Tb4b4b4(
Tb4b4b4[Tb4b4b4...Te6edf3excludedTermsTb4b4b4]Tb4b4b4.Te6edf3someTb4b4b4(
Tb4b4b4(Te6edf3termTb4b4b4) Tb4b4b4=>
Te6edf3termsTb4b4b4[Te6edf3termTb4b4b4] Tff7b72=== Te6edf3file Tff7b72||
Te6edf3titleTermsTb4b4b4[Te6edf3termTb4b4b4] Tff7b72=== Te6edf3file Tff7b72||
Tb4b4b4(Te6edf3termsTb4b4b4[Te6edf3termTb4b4b4] Tff7b72|| Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3fileTb4b4b4) Tff7b72||
Tb4b4b4(Te6edf3titleTermsTb4b4b4[Te6edf3termTb4b4b4] Tff7b72|| Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3fileTb4b4b4)
Tb4b4b4)
Tb4b4b4)
Tff7b72breakTb4b4b4;

T8b949e// select one (max) score for the file.
Tff7b72const Te6edf3score Tff7b72= Tffa657MathTb4b4b4.Te6edf3maxTb4b4b4(Tb4b4b4...Te6edf3wordListTb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3wTb4b4b4) Tb4b4b4=> Te6edf3scoreMapTb4b4b4.Te6edf3getTb4b4b4(Te6edf3fileTb4b4b4)Tb4b4b4.Te6edf3getTb4b4b4(Te6edf3wTb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4;
T8b949e// add result to the result list
Te6edf3resultsTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4[
Te6edf3docNamesTb4b4b4[Te6edf3fileTb4b4b4]Tb4b4b4,
Te6edf3titlesTb4b4b4[Te6edf3fileTb4b4b4]Tb4b4b4,
Ta5d6ff""Tb4b4b4,
Tff7b72nullTb4b4b4,
Te6edf3scoreTb4b4b4,
Te6edf3filenamesTb4b4b4[Te6edf3fileTb4b4b4]Tb4b4b4,
Te6edf3SearchResultKindTb4b4b4.Te6edf3textTb4b4b4,
Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3resultsTb4b4b4;
Tb4b4b4}Tb4b4b4,

T8b949e/**
* helper function to return a node containing the
* search summary for a given text. keywords is a list
* of stemmed words.
*/
Te6edf3makeSearchSummaryTff7b72: Tb4b4b4(Te6edf3htmlTextTb4b4b4, Te6edf3keywordsTb4b4b4, Te6edf3anchorTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3text Tff7b72= Te6edf3SearchTb4b4b4.Te6edf3htmlToTextTb4b4b4(Te6edf3htmlTextTb4b4b4, Te6edf3anchorTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3text Tff7b72=== Ta5d6ff""Tb4b4b4) Tff7b72return Tff7b72nullTb4b4b4;

Tff7b72const Te6edf3textLower Tff7b72= Te6edf3textTb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3actualStartPosition Tff7b72= Tb4b4b4[Tb4b4b4...Te6edf3keywordsTb4b4b4]
Tb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3kTb4b4b4) Tb4b4b4=> Te6edf3textLowerTb4b4b4.Te6edf3indexOfTb4b4b4(Te6edf3kTb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4)
Tb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3iTb4b4b4) Tb4b4b4=> Te6edf3i Tff7b72> Tff7b72-T79c0ff1Tb4b4b4)
Tb4b4b4.Te6edf3sliceTb4b4b4(Tff7b72-T79c0ff1Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3startWithContext Tff7b72= Tffa657MathTb4b4b4.Te6edf3maxTb4b4b4(Te6edf3actualStartPosition Tff7b72- T79c0ff120Tb4b4b4, T79c0ff0Tb4b4b4)Tb4b4b4;

Tff7b72const Te6edf3top Tff7b72= Te6edf3startWithContext Tff7b72=== T79c0ff0 Tff7b72? Ta5d6ff"" Tff7b72: Ta5d6ff"..."Tb4b4b4;
Tff7b72const Te6edf3tail Tff7b72= Te6edf3startWithContext Tff7b72+ T79c0ff240 Tff7b72< Te6edf3textTb4b4b4.Te6edf3length Tff7b72? Ta5d6ff"..." Tff7b72: Ta5d6ff""Tb4b4b4;

Tff7b72let Te6edf3summary Tff7b72= Tffa657documentTb4b4b4.Te6edf3createElementTb4b4b4(Ta5d6ff"p"Tb4b4b4)Tb4b4b4;
Te6edf3summaryTb4b4b4.Te6edf3classListTb4b4b4.Te6edf3addTb4b4b4(Ta5d6ff"context"Tb4b4b4)Tb4b4b4;
Te6edf3summaryTb4b4b4.Te6edf3textContent Tff7b72= Te6edf3top Tff7b72+ Te6edf3textTb4b4b4.Te6edf3substrTb4b4b4(Te6edf3startWithContextTb4b4b4, T79c0ff240Tb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4) Tff7b72+ Te6edf3tailTb4b4b4;

Tff7b72return Te6edf3summaryTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;

Te6edf3_readyTb4b4b4(Te6edf3SearchTb4b4b4.Te6edf3initTb4b4b4)Tb4b4b4;


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────